
# 定义加密解密类
from django.conf import settings
from itsdangerous import TimedJSONWebSignatureSerializer


class SecretOauth(object):

    def __init__(self):
        # 1:根据签名创建序列化对象,需要传入的参数是：1：秘钥（使用django自己的秘钥）  2： 秘钥过期时间
        self.serializer = TimedJSONWebSignatureSerializer(secret_key=settings.SECRET_KEY, expires_in=24 * 15 * 60)

    # 加密方法,需要传入一个字典类型的对象
    def dumps(self, content_dict):
        access_token = self.serializer.dumps(content_dict)
        # 由于加密后是二进制类型的，所以需要转换成字符串类型的
        return access_token.decode()

    # 解密方法，需要传入一个加密后的对象
    def loads(self, access_token):
        # 解密有风险，需要捕获异常
        try:
            data = self.serializer.loads(access_token)
        except Exception as e:
            print(e)
            # 如果解密失败，返回None
            return None

        return data



